package es.ucm.is.www.GUI.client.admin;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

import es.ucm.is.www.GUI.client.Constantes;
import es.ucm.is.www.GUI.client.panels.ErrorPanel;
import es.ucm.is.www.GUI.client.panels.PanelAlert;
import es.ucm.is.www.GUI.client.panels.PanelWaitingRight;
import es.ucm.is.www.GUI.client.profile.ProfilePanel;
import es.ucm.is.www.GUI.client.register.RegisterService;
import es.ucm.is.www.GUI.client.register.RegisterServiceAsync;
import es.ucm.is.www.GUI.client.register.UserGUI;
/**
 * <p>Title: ProfileStatePanel.java </p>
 *
 * <p>Description: Panel para indicar sobre que jugador se quieren consultar su perfil. </p>
 *
 * <p>Copyright: Enrique Lopez Manas </p>
 *
 * @author Enrique Lopez Manas
 * @author Angel Ruiz Alonso
 * @version 1.0
 * @see
 */
public class ProfileStatePanel extends Composite{
	final VerticalPanel panel = new VerticalPanel();
	 final TextBox userName = new TextBox();
	 final HTML htmlPlayer = new HTML("<b>Perfil de jugador</b>");
	 final Button button = new Button("Consultar");
	 final HTML title = new HTML("<b>Consultar perfil</b>");
	 UserGUI aux;
	 /**
	   * @param panel: panel sobre el que se carga esta seccion de la aplicacion
	   * @param userName: cuadro de texto para el nombre de usuario
	   * @param htmlPlayer: nombre del jugador en HTML
	   * @param button boton consultar
	   * @param title: titulo de la ventana
	   * @param aux: perfil de usuario auxiliar
	   **/
	 /**
	  * Metodo constructor de la clase
	  */
	 public ProfileStatePanel() {
		 Constantes.setRight(null);
		 Constantes.setLeft(new PanelLateralAdmJugadores());
		 
		 userName.setMaxLength(25);
		 userName.setVisibleLength(25);
		 button.setSize("178px","25px");
		 
		 panel.add(title);
		 panel.add(htmlPlayer);
		 panel.add(userName);
		 aux = new UserGUI();
		 button.addClickListener(new ClickListener() {
			 public void onClick(Widget sender) {
				    RegisterServiceAsync servicio = (RegisterServiceAsync) GWT.create(RegisterService.class);
					ServiceDefTarget endpoint = (ServiceDefTarget) servicio;
					endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "servletRegister");
					final PanelWaitingRight p = new PanelWaitingRight("Comprobando validez usuario");
					p.mostrar();
					AsyncCallback<Boolean> callback = new AsyncCallback<Boolean>(){
						
						public void onFailure(Throwable caught) {
							p.ocultar();
							ErrorPanel error = new ErrorPanel("Error conectando con el servidor...");
							error.show();
						}

						public void onSuccess(Boolean result) {
							p.ocultar();
							if(result == true){	
						      Constantes.setLeft(new PanelLateralAdmJugadores());		 
						      Constantes.setRight(new ProfilePanelAdmin2(userName.getText(),true));
							}else{
								PanelAlert.Alert("INFORMACI&Oacute;N", "El usuario <b>"+userName.getText()+" </b>no est&aacute; registrado en el sistema");
								/*PopupPanel p = new PopupPanel(true);
								p.setWidget(new HTML("El usuario "+userName.getText()+" no est&aacute; registrado en el sistema"));
								p.center();
								p.show();*/
							}
						}
				    
					};
			  aux.setUsername(userName.getText());
			 servicio.checkUser(aux, callback);
		  	};
		 });
		 panel.add(button);
		 initWidget(panel);
	 }
}
